package com.fanyu.test.paper;

import com.alibaba.fastjson.JSONObject;
import com.fanyu.framework.utils.HttpClients4;
import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;

/**
 * 对接机构版 代码演示  (单点登录对接方式)
 *
 * @author Administrator
 */

public class SsoLoginDemo {
    /**
     * 由维普提供的userid
     */
    public static final String USER_ID = "******";
    /**
     * 由维普提供的密钥
     */
    public static final String KEY = "******";



    public static void main(String[] args) {
        // 单点登录获取登录地址
        getLoginUrl();
    }


    public static String getLoginUrl() {
        // 时间戳精确到毫秒
        String timestamp = String.valueOf(System.currentTimeMillis());
        // 角色编码(0:学生, 1:老师, 3:院系管理员) （仅在初始化账号时有效）
        String roleCode = "0";
        // 需要登陆系统的用户名，长度不能超过20位
        String username = "xxxxxx";
        //系统版本 1:研究生版 2:大学生版 3:职称版, 4:编辑部版 (不传默认为2:大学生版)
        String version = "2";

        String strParams = "key=" + KEY + "&rolecode=" + roleCode + "&timestamp=" + timestamp + "&version=" + version + "&username=" + username + "&userid=" + USER_ID;
        //生成加密sign
        String sign = DigestUtils.md5DigestAsHex(strParams.getBytes(StandardCharsets.UTF_8)).toLowerCase();

        strParams = strParams + "&sign=" + sign;

        // 发送请求
        HttpClients4 clients4 = new HttpClients4();
        HttpClients4.HttpClientResult hcr = clients4.get("https://vims.fanyu.com/api/sso/login?" + strParams);

        // 查看返回信息
        JSONObject resJson = JSONObject.parseObject(hcr.getBodyAsString());
        System.out.println("对接机构，单点登录返回结果：" + resJson);

        if (resJson.getBoolean("success")) {
            // 登录成功
            String loginUrl = resJson.getJSONObject("args").getString("url");
            System.out.println("登录成功，返回地址：" + resJson.getJSONObject("args").getString("url"));
            return loginUrl;
        }
        else {
            // 登录失败
            System.out.println(resJson.getString("msg"));
            return null;
        }
    }
}
